﻿#define _CRT_SECURE_NO_WARNINGS 1

//函数
//• 库函数
//• ⾃定义函数

////库函数 sqrt 的使用
//#include<stdio.h>
//#include<math.h>
//
//int main()
//{
//	double num1 = 25.0;
//	double ret = sqrt(num1);
//	printf("%lf\n", ret);
//
//	return 0;
//}

////写⼀个加法函数，完成2个整型变量的加法操作
//#include<stdio.h>
//
////形参是实参的⼀份临时拷⻉
//int add(int x, int y)//这里的x，y是形参
//{
//	return (x + y);
//}
//
//int main()
//{
//	int a = 0, b = 0;
//	scanf("%d %d", &a, &b);
//
//	int ret = add(a, b);//这里的a，b是实参
//	printf("%d\n", ret);
//
//	return 0;
//}

////实现一个函数，求2个整数的较大值
//#include<stdio.h>
//
//int get_max(int x, int y)
//{
//	return (x > y ? x : y);
//}
//
//int main()
//{
//	int a = 0, b = 0;
//	scanf("%d %d", &a, &b);
//
//	int max = get_max(a, b);
//	printf("%d\n", max);
//
//	return 0;
//}


////数组做函数参数
////写⼀个函数对将⼀个整型数组的内容，全部置为 - 1，再写⼀个函数打印数组的内容。
//#include<stdio.h>
//
//void set_arr(int arr[],int size)
//{
//	int i = 0;
//	for (i = 0; i < size; i++)
//	{
//		arr[i] = -1;
//	}
//}
//
//void print_arr(int arr[],int size)
//{
//	int i = 0;
//	for (i = 0; i < size; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	printf("\n");
//}
//
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int size = sizeof(arr) / sizeof(int);
//	print_arr(arr, size);
//	//数组的内容，全部置为 - 1
//	set_arr(arr,size);
//	//打印数组
//	print_arr(arr,size);
//
//	return 0;
//}


//#include<stdio.h>
//
//void print(int arr[][5], int row, int col)
//{
//	int i = 0;
//	for (i = 0; i < row; i++)
//	{
//		int j = 0;
//		for (j = 0; j < col; j++)
//		{
//			printf("%d ", arr[i][j]);
//		}
//		printf("\n");
//	}
//
//}
//
//int main()
//{
//	int arr[3][5] = { {1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7} };
//	print(arr,3,5);
//
//	return 0;
//}

////假设我们计算某年某⽉有多少天？如果要函数实现，可以设计2个函数:
////• is_leap_year()：根据年份确定是否是闰年
////• get_days_of_month()：调⽤is_leap_year确定是否是闰年后，再根据⽉计算这个⽉的天数
//#include<stdio.h>
//
//int is_leap_year(int y)
//{
//	if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0))
//		return 1;
//	else
//		return 0;
//}
//
//int get_days_of_month(int y,int m)
//{
//	int month[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
//
//	int days = month[m];
//
//	if (is_leap_year(y) && m == 2)
//		days += 1;
//
//	return days;
//}
//
//int main()
//{
//	int year = 0, month = 0;
//	scanf("%d %d", &year, &month);
//
//	int days = get_days_of_month(year,month);
//
//	printf("%d\n", days);
//
//	return 0;
//}


//#include<stdio.h>
//
//int is_leap_year(int y)
//{
//	if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0))
//		return 1;
//	else
//		return 0;
//}
//
//int get_days_of_month(int y,int m)
//{
//	//int month[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
//	int days = 0;
//	switch (m)
//	{
//	case 2:
//		days = 28;
//		break;
//	case 1:
//	case 3:
//	case 5:
//	case 7:
//	case 8:
//	case 10:
//	case 12:
//		days = 31;
//		break;
//	case 4:
//	case 6:
//	case 9:
//	case 11:
//		days = 30;
//	}
//
//	if (is_leap_year(y) && m == 2)
//		days += 1;
//
//	return days;
//}
//
//int main()
//{
//	int year = 0, month = 0;
//	scanf("%d %d", &year, &month);
//
//	int days = get_days_of_month(year,month);
//
//	printf("%d\n", days);
//
//	return 0;
//}


////链式访问 -- 将⼀个函数的返回值作为另外⼀个函数的参数


//#include<stdio.h>
//#include<string.h>
//
//int main()
//{
//	char arr[] = "abc0def";
//	printf("%zd\n", strlen(arr));//链式访问
//
//	return 0;
//}

//#include <stdio.h>
//
//int main()
//{
//	//printf返回值是写入字符的总数(int)
//	printf("%d\n", printf("%d", printf("%d", 43)));//4321
//	printf("%d\n", printf("%d ", printf("%d ", 43)));//43 3 2
//	return 0;
//}


//函数的声明和定义
//多个⽂件

//⼀般情况下，函数的声明、类型的声明放在头⽂件（.h）中，函数的实现是放在源⽂件（.c）⽂件中

//下面实现一个简单的计算器 add、sub、mul、div 学习，在test.c中调用
#include<stdio.h>
#include "Cal.h"

int main()
{
	int num1 = 0, num2 = 0;
	scanf("%d %d", &num1, &num2);

	int ret1 = add(num1, num2);
	int ret2 = sub(num1, num2);
	int ret3 = mul(num1, num2);
	double ret4 = div(num1, num2);

	printf("add = %d\n", ret1);
	printf("sub = %d\n", ret2);
	printf("mul = %d\n", ret3);
	printf("div = %lf\n", ret4);

	return 0;
}




